ERP俱乐部
ERP爱好者、ERP从业者互相交流、互相学习的乐园;我们的愿景是成为全球一流的中文ERP(Enterprise Resource Planning)交流平台
网站首页 论坛首页 搜索 用户列表 FAQ 注册 登录  
ERP俱乐部 -> SAP专栏 -> ABAP -> 如何让ABAP报表和程序RUN的更快(转)
  如何让ABAP报表和程序RUN的更快(转)
帖子发起人: caoxu   发起时间: 2011-09-15 05:31 下午   回复数: 3
? 上一主题 下一主题 ?
楼主
  2011-09-15, 05:31 下午
caoxu 离线,最后访问时间: 2012/1/20 15:36:41 caoxu

发帖数前75位

60级
等级: 60级
注册: 2011年8月23日
经验: 391
积分: 371
精华: 0
发贴: 213
排名: 64
Site Registered Users
如何让ABAP报表和程序RUN的更快(转)
 

ABAP/4的程序会需要花费大量的时间执行,而且会使其它进程被迫暂停以等待当前程序运行结束。
这里提供一些建议以提高你的程序运行速度和系统荷载。

1.最主要的是尽量减少I/O操作,然后是内存占用,在再就是CPU的负载。类似对硬盘的读写的I/O 操作是最耗费时间的。
如果对内存的操作不加以控制,可能有些时候不得不对硬盘的交换空间操作,这样就增加了对磁盘的I/O读写操作。
CPU的负载可以通过优化程序来改善,在程序中尽量使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。

2.Field-groups对于多层次的排序和显示是非常有用的。它是将数据写入系统的页面文件,而不是内存(内表是使用内存的)。

基于这个原因,field-groups比较适合于处理大量数据的列表(一般超过50000条记录)。如果涉及大量的数据处理,应该首先和系统管理员协商来决定这个程序最多能使用多少内存,以计算这个程序需要使用多少资源。然后你就可以决定是把数据写入内存还是交换空间。

3.尽可能多地使用表的键值作为WHERE分句的条件选项。尽可能让程序只读取一定范围内的记录 (比如说,你只准备操作一个月之内的业务数据,那么对于这一个月的业务就应该有一定的范围 取值,如1000~2000。)

4..尽量使用这样的选择语句SELECT A B C INTO TABLE ITAB,最好是跟表的字段顺序相同。

5.尽量把更多选择项放在用户选择界面上,以避免程序一次选出大量的数据。

6.用OCCURS NUM_RECS声明内表,NUM_RECS参数是你估计(或希望)使用到的数据条数。
如果使用到的记录条数超出NUM_RECS参数的限制,数据将被存放在硬盘上的交换空间(不是内 存)。

7.尽量使用SELECT A B C INTO TABLE ITAB这样的语句。这个操作会将所有符合条件的数据一次 性地读进内表, 这比在SELECT A B C INTO ITAB... ENDSELECT的循环中添加数据到内表要快。请注意,这里声 明的内表还应该符合第6条的条件。

8.如果读出的记录条数在持续增长,你应该把这些数据分割成几个固定大小的数据块。比如说, 你想调出一年的数据, 就可以按照月份把一年的数据分成12个月调出。这样做能减少I/O的操作。

9.学会用效率比较高的COLLECT语句。

10.尽可能使用SELECT SINGLE语句。

11.做好表的索引,这一点才是最关键的,在where 里,查询条件的顺序最好跟索引关键字一样,要不然你的索引就不起什么作用。

12.尽量用后勤数据仓库来查询。


分享按钮 IP 地址: 已登录   来自: 已登录    返回顶部
第 2 楼
  2012-12-04, 04:47 下午
kitty 离线,最后访问时间: 2021/8/19 15:32:28 kitty

发帖数前10位
女

超级管理员
职务: 超级管理员
90级
等级: 90级
注册: 2004年9月7日
区域: 深圳
经验: 3,483
积分: 5,947
精华: 0
发贴: 2,176
排名: 10
Global AdministratorsGlobal ModeratorsSite ModeratorsSite Registered Users培训学员(FI学员服务区-深圳200410班)培训学员(SD学员服务区-深圳200503班) 培训学员(ABAP学员服务区-深圳200503班) 培训学员(MM学员服务区-上海200412班) 培训学员(SAP PP) 培训学员(MM学员服务区-深圳200412班) 培训学员(SD学员服务区-深圳200407班) 培训学员(SD学员服务区-上海200503班) 培训学员(FI学员服务区-上海200502班) 培训学员(FI学员服务区-深圳200504班)培训学员(MM学员服务区-北京200505班) 培训学员(MM学员服务区-上海200505班) 培训学员(PP学员服务区-上海200505班) 培训学员(FI学员服务区-北京200505班) 培训学员(MM学员服务区-深圳200507班)培训学员(ABAP学员服务区-深圳200508班) 培训学员(ABAP学员服务区-上海200508班) 培训学员(CO学员服务区-上海200510班) 培训学员(CO学员服务区-深圳200510班) 培训学员(BASIS学员服务区-深圳200510班) 培训学员(MM学员服务区-上海200510班) 培训学员(MM学员服务区-广州200511班)培训学员(SD学员服务区-北京200603班) 培训学员(BW学员服务区-上海200710黄金周班) 培训学员(HR学员服务区-上海200711班) 每日发帖之星
Re: 如何让ABAP报表和程序RUN的更快(转)
 
good!
Kitty,ERPCLUB TEAM
You ok,so we ok
email:tm@yok.com.cn
MSN:kitty_mtang@hotmail.com
我的博客:http://www.erpclub.org/blog/kitty/
IP 地址: 已登录   来自: 已登录    返回顶部
第 3 楼
  2013-09-02, 09:50 上午
欧阳可 离线,最后访问时间: 2014/6/6 11:59:33 欧阳可

发帖数前150位

50级
等级: 50级
注册: 2013年7月8日
经验: 315
积分: 315
精华: 0
发贴: 128
排名: 79
Site Registered Users
Re: 如何让ABAP报表和程序RUN的更快(转)
 
顶一下
Ke.ouyang
ERP/SAPCLUB 亚可公司
tel:0755-26523860; 18038036868
email: ke.ouyang@yok.com.cn info@yok.com.cn
MSN:yoksaphunter@hotmail.com
请关注亚可官方微博:
亚可YOK 、sapclub
QQ:819470295

分享按钮 IP 地址: 已登录   来自: 已登录    返回顶部
第 4 楼
  2013-10-14, 05:24 下午
summerlan 离线,最后访问时间: 2013/12/16 10:45:06 summerlan

发帖数前50位
女

70级
等级: 70级
注册: 2013年5月17日
经验: 501
积分: 642
精华: 0
发贴: 381
排名: 52
Site Registered Users
Re: 如何让ABAP报表和程序RUN的更快(转)
 
很好,谢谢!
来Yok !
You ok,so we ok
email:cuiqin.lan@yok.com.cn
tel:0755-26523860; 18038036868
MSN:yoksaphunter@hotmail.com
QQ:374439400
请关注亚可官方微博:
亚可YOK 、sapclub

IP 地址: 已登录   来自: 已登录    返回顶部
 第 1 页 总共 1 页 [共有 4 条记录]
ERP俱乐部 -> SAP专栏 -> ABAP -> 如何让ABAP报表和程序RUN的更快(转)
(C)Copyright 2005-2020 www.erpclub.org All Rights Reserved.
Tel:+86-755-26444630
Email:webmaster@yok.com.cn